#ifndef __EXCELHELP_H__
#define __EXCELHELP_H__

#include <QColor>
#include <QFile>
#include <QString>
#include <QVariantList>

/**
 * @brief 将内容写入 CSV 文件
 *
 * @param file 目标文件
 * @param content 要写入的内容
 */
void writeCSVFile(QFile &file, const QList<QStringList> &content);

/**
 * @brief 从 CSV 文件读取内容
 *
 * @param file 要读取的文件
 * @param content 返回读取到的内容
 */
void readCSVFile(QFile &file, QList<QStringList> &content);

/**
 * @brief 将内容写入xml电子表格
 *
 * @param filename 写入的目标文件名
 * @param content 要写入的内容
 * @param rows 要写入的行数
 * @param cols 要写入的列数
 * @return true 成功
 * @return false 失败
 */
bool writeXmlFile(const QString &filename,           //
                  const QList<QStringList> &content, //
                  int rows,                          //
                  int cols                           //
);

/**
 * @brief 将内容写入电子表格
 *
 * @param filename 写入的目标文件名
 * @param content 要写入的内容
 * @param rows 要写入的行数
 * @param cols 要写入的列数
 * @param bgcolor 要设置的背景颜色
 * @return true 成功
 * @return false 失败
 */
bool writeXLSXFile(const QString &filename,     //
                   const QVariantList &content, //
                   int rows,                    //
                   int cols,                    //
                   QColor bgcolor = Qt::white);

/**
 * @brief 从电子表格读取内容
 *
 * @param filename 读取的目标文件名
 * @param content 返回读取到的内容
 * @param rows 要读取的行数, 当小于1时为表格所有内容
 * @param cols 要读取的列数, 当小于1时为表格所有内容
 * @return true 成功
 * @return false 失败
 */
bool readXLSXFile(const QString &filename, //
                  QVariantList &content,   //
                  int rows,                //
                  int cols                 //
);

#endif // __EXCELHELP_H__
